博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网站搭建笔记精简版---廖雪峰WebApp实战-Day8:构建前端笔记
阅读量:4166 次
发布时间:2019-05-26

本文共 3146 字,大约阅读时间需要 10 分钟。

前面已经构建好MVC,可以进行可视化,但是,老丑了,因此需要CSS等进行美化一下。这样形容一下,html为网页的骨架,JavaScript为网页的肌肉,css为网页的衣服。

模板下载

感谢强大的互联网,我们可以通过找到已经写好的强大的CSS框架。它具备完善的响应式布局,漂亮的UI,以及丰富的HTML组件,让我们能轻松设计出美观而简洁的页面。

下载后,看了下与廖老师的代码对比,有点不一样呀,就直接下载了老师的,将static里的东西给复制过来。

模板生成

生成的许多前端网页html模板,当需要修改页眉页脚时候,需要所有的一个一个修改,老麻烦了,因此jinjia2的模板解决了这个问题,它具有“继承”的方式,实现模板的复用更简单。

base.html父模板编写

接下来我们基于uikit这个css框架写一下templates文件夹中的基网页的模板__base__.html。之后的各个子网页均基于这个网页派生出来的。

“继承”模板的方式是通过编写一个“父模板”,在父模板中定义一些可替换的block(块)。然后,编写多个“子模板”,每个子模板都可以只替换父模板定义的block。当用的时候或做项目的时候直接在这个页面上修改即可。

    
# 用于子页面定义一些meta,例如rss feed {% block meta %}
{% endblock %} # 用于子页面覆盖当前页面的标题 {% block title %} ? {% endblock %} - Awesome Python Webapp
# 子页面可以在标签关闭前插入JavaScript代码 {% block beforehead %}
{% endblock %}
# 子页面的content布局和内容
{% block content %} {% endblock %}

Powered by Awesome Python Webapp. Copyright © 2014. [Manage]

www.liaoxuefeng.com. All rights reserved.

blogs.html

接下来将上述__base__.html模板继承一个blogs.html出来,即将block替代。

# 强调继承自哪里{% extends '__base__.html' %}# 仅向block中的内容{% block title %}日志{% endblock %}{% block content %}    
{% for blog in blogs %}

{
{ blog.name }}

# 若不加datetime则会显示浮点的时间,datetime在app.py中定义 # 因此通过jinja2的filter(过滤器),把一个浮点数转换成日期字符串。
{ blog.created_at|datetime }}

{

{ blog.summary }}

继续阅读


{% endfor %}
{% endblock %}

app代码更改

app.py中增加如下代码。

def datetime_filter(t):    delta = int(time.time() - t)    if delta < 60:        return '1分钟前'    if delta < 3600:        return '%s分钟前' % (delta // 60)    if delta < 86400:        return '%s小时前' % (delta // 3600)    if delta < 604800:        return '%s天前' % (delta // 86400)    dt = datetime.fromtimestamp(t)    return '%s年%s月%s日' % (dt.year, dt.month, dt.day)...init_jinja2(app, filters=dict(datetime=datetime_filter))...

改后的app.py代码如图

app.py更改

模板应用

接下来直接在cmd命令行输入:python app.py,在浏览器输入http://localhost:9000/即可。

参考博客

转载地址:http://pmlxi.baihongyu.com/

你可能感兴趣的文章
Intel Optane DC Persistent Memory Module (PMM)详解
查看>>
Ubuntu 18.04安装英特尔Optane DC Persistent Memory Module配置工具ipmctl
查看>>
NUMA架构下的CPU拓扑结构
查看>>
如何判断变量在内存中如何放置的?低位在前还是高位在前
查看>>
c语言中通过指针将数值赋值到制定内存地址
查看>>
64位与32位linux c开发时默认字节对齐值
查看>>
malloc(malloc在32位编译系统中分配的地址会8字节对齐,64为编译系统中会8或者16字节对齐)
查看>>
初始化时共享内存的key值和信号量初始化的key值可以一样
查看>>
linux创建线程之pthread_create
查看>>
pthread_attr_init线程通俗举例讲解与线程属性
查看>>
进程和线程的区别
查看>>
int main(int argc,char* argv[])详解,以及与int main()有什么区别
查看>>
SourceInsight全工程查找替换方法
查看>>
C语言chdir()函数:改变当前的工作目录
查看>>
Linux下的函数执行时间的统计方法(测试某个函数的执行时间)
查看>>
调整内核printk的打印级别(启动脚本中运行 echo 0 4 0 7 > /proc/sys/kernel/printk 关闭所有内核打印)
查看>>
临时关闭打开console办法
查看>>
Linux中gmtime和localtime的区别(time_t格式转换为tm格式)
查看>>
如果函数传递的是结构体,小心在调用的参数中给指针重新赋值(拿tm结构体举例)
查看>>
使用nm命令获取linux的可执行文件里或动态库中的所有函数名称
查看>>